ROS2学习笔记(3)什么是ROS2 topics

您所在的位置:网站首页 ros2 topic list只有2个topic ROS2学习笔记(3)什么是ROS2 topics

ROS2学习笔记(3)什么是ROS2 topics

2024-07-16 10:32| 来源: 网络整理| 查看: 265

什么是ROS2 topics

上一篇笔记学习了节点,ROS2正是帮我们可以把一个复杂的系统分解成很多个模块化的节点。

topics(话题)是ROS的重要元素,它的作用就充当这些模块化的节点之间交换信息的总线。

节点通过发布和订阅的方式进行话题消息通信。话题不是只有点对点的通信方式。一个节点可以发布向任意数量的话题发布数据,同时也可以订阅任意数量的话题。从而实现一对多、多对一、多对多的通信方式。

请添加图片描述

话题里是什么样?

先来再次跑起海龟模拟器(turtlesim)和海龟操控键盘(turtle_teleop_key)。

查看话题列表

新开一个终端输入ros2 topic list可以查看系统中当前存在的话题列表。

终端返回:

/parameter_events /rosout /turtle1/cmd_vel /turtle1/color_sensor /turtle1/pose

目前存在5个话题,从前一篇学习笔记中知道/turtlesim和/teleop_turtle节点都有*/turtle1/cmd_vel*这个话题。从名称cmd_vel可以猜测:是command velocity (速度命令)的缩写,/teleop_turtle节点通过这个话题发布速度,订阅者/turtlesim节点收到后移动海龟。

话题回显

可以用ros2 topic echo 这个命令来回显话题中的数据。

来看一下/turtle1/cmd_vel这个话题的数据:

ros2 topic echo /turtle1/cmd_vel

运行后没有看到任何东西,这时候在运行turtle_teleop_key的终端操作方向键,就立看到回显的话题数据了

在这里插入图片描述

所以正是通过/turtle1/cmd_vel这个话题来使海龟移动。

查看话题信息

前面的操作已经知道了话题列表里话题的名称,现在可以用ros2 topic info 命令来看话题的更多信息。

查看一下/turtle1/cmd_vel这个话题

ros2 topic info /turtle1/cmd_vel

终端返回:

在这里插入图片描述

可以看到这个话题的类型是geometry_msgs/msg/Twist,发布者的数量1个,订阅者的数量1个。可以尝试多开几个海龟窗口,看看话题信息的变化。

ros2 interface show

我们已经了解到,节点使用消息通过话题发送数据。

发布者和订阅者必须传输相同类型的消息才能进行通信。

通过topic info命令,我们知道了/turtle1/cmd_vel的类型是geometry_msgs/msg/Twist。(使用ros2 topic list -t这个命令可以同时查看话题列表和每个话题的类型)。

geometry_msgs/msg/Twist表示在geometry_msgs包中有一个msg叫做Twist。

通过**ros2 interface show **这个命令可以查看消息类型的更多细节,特别是消息的数据结构。

查看一下geometry_msgs/msg/Twist:

在这里插入图片描述

可以了解到这个消息类型中包含两个三维向量,分别是线速度和角速度。

其它补充

使用命令将数据发布到话题。可以使用ros2 topic pub ''这个命令直接在命令行测试消息发布到话题。

需要注意的是 ''参数需要以 YAML 语法输入,比如用以下命令发布一次消息:

ros2 topic pub --once /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}"

使用命令查看话题中数据发布的频率。可以使用ros2 topic hz 。

ROS2话题的学习就先到这了。

参考: ROS 2 Documentation:https://docs.ros.org/en/galactic/index.html


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3